As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of service providers are turning to technologies such as cloud computing. In general, cloud computing is an approach to providing access to remote resources through a network. Such resources may include hardware and/or software. Hardware resources may include computers (e.g., servers), mass storage devices, and other useful hardware elements. Software resources may include operating systems, databases, etc. Customers of the service provider can create and manage virtual machines using the service provider's resources and load customer-specific software applications on such virtual machines. The customer then may pay for use of the service provider's resources rather than owning and operating his or her own hardware and software resources.
As with any computer network, performance is an issue. All else being equal, lower latencies and fewer errors are preferred over higher latencies and/or a higher number of errors. In the context of a customer using remote resources of a service provider, the customer may not have much control over and insight into the internal operations of the remote resources. Consequently, performance problems of the remote resources may be difficult to detect and diagnose by the customers. Such problems also may be difficult to detect and diagnose by the service provider because the service provider may have numerous (e.g., hundreds, thousands, or tens of thousands) customers using the service providers' resources and thus individually monitoring the resources used by each customer may be cumbersome and difficult.